package com.zjsru.leetcode75.level1.tree;

/**
 * @Author: cookLee
 * @Date: 2023-12-12
 * 二叉搜索树中的搜索
 */
public class SearchBST {

    /**
     * 主
     * \
     * 输入：root = [4,2,7,1,3], val = 2
     * 输出：[2,1,3]
     * \
     * 输入：root = [4,2,7,1,3], val = 5
     * 输出：[]
     * \
     * @param args args
     */
    public static void main(String[] args) {
        TreeNode tree = new TreeNode(5, new TreeNode(3, new TreeNode(2), new TreeNode(4, null, null)), new TreeNode(6, null, new TreeNode(7, null, null)));
        int val = 3;
        SearchBST searchBST = new SearchBST();
        System.out.println(searchBST.searchBST(tree, val));
    }

    /**
     * 搜索bst
     * 左子树所有节点的元素值均小于根的元素值；
     * 右子树所有节点的元素值均大于根的元素值。
     * @param root 根
     * @param val  val
     * @return {@link TreeNode}
     */
    public TreeNode searchBST(TreeNode root, int val) {
        if (root == null) {
            return null;
        } else if (root.val == val) {
            return root;
        } else if (root.val > val) {
            return this.searchBST(root.left, val);
        } else {
            return this.searchBST(root.right, val);
        }
    }

}
